﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class Administrador_Clientes_ModificarCliente : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void ButtonVerDatos_Click(object sender, EventArgs e)
    {
        if (ButtonVerDatos.Text.Trim().CompareTo("Ver datos") == 0)
        {//el boton debe mostrar los datos
            try
            {
                //autorellenar campos
                DataSetEscorpiusTour.CLIENTEDataTable ds = new DataSetEscorpiusTour.CLIENTEDataTable();
                ClienteBLL clientebll = new ClienteBLL();

                //seleccionar campos
                ds = clientebll.mostrarClientesByRut(int.Parse(DropDownListClientes.Text));
                TextBoxNombre.Text = ds.Rows[0][1].ToString();
                TextBoxTelefono.Text = ds.Rows[0][2].ToString();
                TextBoxDireccion.Text = ds.Rows[0][3].ToString();
                TextBoxCorreo.Text = ds.Rows[0][4].ToString();
                TextBoxWeb.Text = ds.Rows[0][5].ToString();
                TextBoxGiro.Text = ds.Rows[0][6].ToString();

                //el boton impide que se cambie el rut
                DropDownListClientes.Enabled = false;

                //el boton cambia de nombre
                ButtonVerDatos.Text = "Limpiar";

                //esconder mensajes
                LabelMensaje.Visible = false;

            }
            catch (Exception ex)
            {
                LabelMensaje.Text = "Error al autorrellenar campos.";
                LabelMensaje.Visible = true;
            }
        }
        else
        {//el boton no es ver datos, entonces es "Ver otros"
            //el boton desbloquea el droplist de operadores
            DropDownListClientes.Enabled = true;

            //el boton borra los datos actuales
            TextBoxTipo.Text = "Tipo";
            TextBoxNombre.Text = "Nombre";
            TextBoxTelefono.Text = "";
            TextBoxDireccion.Text = "Direccion";
            TextBoxCorreo.Text = "";
            TextBoxWeb.Text = "";
            TextBoxGiro.Text = "";

            //el boton cambia de nombre
            ButtonVerDatos.Text = "Ver datos";

            //esconder mensajes
            LabelMensaje.Visible = false;
        }
    }
    protected void ButtonModificar_Click(object sender, EventArgs e)
    {
        try
        {
            //validar los datos
            //Validacion validador = new Validacion();
            bool es_valido = true;

            //validar rut
            //no es necesario validar el rut pues viene directamente de la base de datos

            //validar nombre//////////////////////////////////////////////////////////////////////////////
            //la existencia de un nombre es validad en la vista

            //validar fono////////////////////////////////////////////////////////////////////////////////

            //ver si el campo es numerico
            if (es_valido == true)
            {//si ha pasado las demas pruebas
                if (TextBoxTelefono.Text.CompareTo("") != 0)
                {//si existe algo dentro del campo
                    string value = TextBoxTelefono.Text.Trim();
                    int number;
                    bool res = Int32.TryParse(value, out number);
                    if (res == false)
                    {//no se puede realizar la conversion
                        es_valido = false;
                        LabelMensaje.Text = "Campo Teléfono sobrepasa máximo permitido.";
                        LabelMensaje.Visible = true;
                    }
                }
                //si el campo es vacío se puede dejar asi (null)
            }

            //validar direccion//////////////////////////////////////////////////////////////////////////////
            //la existencia de una direccion se valida en la vista

            //validar correo
            //correo puede ser nulo, ademas es string, no necesita validacion
            //la vista valida el correo con un prototipo usr@mal.dir

            //insertar operador///////////////////////////////////////////////////////

            if (es_valido == true)
            {//si ha pasado todas las pruebas
                //rescatar datos validados!

                int rut = int.Parse(DropDownListClientes.Text.Trim());
                string tipo = TextBoxTipo.Text.Trim();
                string nombre = TextBoxNombre.Text.Trim();
                int fono = int.Parse(TextBoxTelefono.Text.Trim());
                string direccion = TextBoxDireccion.Text.Trim();
                string correo = TextBoxCorreo.Text.Trim();
                string web = TextBoxCorreo.Text.Trim();
                string giro = TextBoxGiro.Text.Trim();

                ClienteBLL clientebll = new ClienteBLL();//conexion con modelo

                int filas_afectadas = clientebll.actualizarCliente(nombre, fono, direccion, correo, web, giro, tipo, rut);
                if (filas_afectadas == 0)
                {
                    LabelMensaje.Text = "Imposible modificar cliente.";
                    LabelMensaje.Visible = true;
                }
                else
                {
                    LabelMensaje.Text = "Cliente modificado exitósamente.";
                    LabelMensaje.Visible = true;
                }
            }
        }
        catch (Exception)
        {
            LabelMensaje.Text = "Error al modificar cliente.";
            LabelMensaje.Visible = true;
        }
    }
}
